home *** CD-ROM | disk | FTP | other *** search
/ Mac Format 1995 June / MacFormat 25.iso / Shareware City / Developers / ICProgKit1.0 / Source / Libs / ICSubs.p < prev    next >
Text File  |  1994-11-27  |  2KB  |  97 lines

  1. unit ICSubs;
  2.  
  3. interface
  4.  
  5.     uses
  6. {$ifc undefined THINK_Pascal}
  7.         Types, 
  8. {$endc}
  9.         ICTypes;
  10.  
  11.     function ICMapErr (icerr: ICError): OSErr;
  12.     function ICGetPrefHandle (inst: ICInstance; key: Str255; var attr: ICAttr; var prefh: Handle): ICError;
  13.     function ICSetPrefHandle (inst: ICInstance; key: Str255; attr: ICAttr; prefh: Handle): ICError;
  14.     function ICGetPrefStr (inst: ICInstance; key: Str255; var attr: ICAttr; var str: Str255): ICError;
  15.     function ICSetPrefStr (inst: ICInstance; key: Str255; attr: ICAttr; str: Str255): ICError;
  16.  
  17. implementation
  18.  
  19.     uses
  20. {$ifc undefined THINK_Pascal}
  21.         Memory, Resources, 
  22. {$endc}
  23.         ICAPI;
  24.  
  25.     function ICMapErr (icerr: ICError): OSErr;
  26.     begin
  27.         if (icerr < -32768) or (icerr > 32767) then begin
  28.             icerr := icInternalErr;
  29.         end; (* if *)
  30.         ICMapErr := icerr;
  31.     end; (* ICMapErr *)
  32.  
  33.     function ICGetPrefHandle (inst: ICInstance; key: Str255; var attr: ICAttr; var prefh: Handle): ICError;
  34.         var
  35.             err: ICError;
  36.             prefsize: longint;
  37.     begin
  38.         prefh := nil;
  39.         prefsize := 0;
  40.         err := ICGetPref(inst, key, attr, nil, prefsize);
  41.         if err <> noErr then begin
  42.             prefsize := 0;
  43.         end; (* if *)
  44.         prefh := NewHandle(prefsize);
  45.         err := MemError;
  46.         if err = noErr then begin
  47.             HLock(prefh);
  48.             err := ICGetPref(inst, key, attr, prefh^, prefsize);
  49.             if err = icPrefNotFoundErr then begin
  50.                 attr := 0;
  51.                 err := noErr;
  52.             end; (* if *)
  53.             HUnlock(prefh);
  54.         end; (* if *)
  55.         if err <> noErr then begin
  56.             if prefh <> nil then begin
  57.                 DisposeHandle(prefh);
  58.             end; (* if *)
  59.             prefh := nil;
  60.         end; (* if *)
  61.         ICGetPrefHandle := err;
  62.     end; (* ICGetPrefHandle *)
  63.  
  64.     function ICSetPrefHandle (inst: ICInstance; key: Str255; attr: ICAttr; prefh: Handle): ICError;
  65.         var
  66.             s: SignedByte;
  67.             err: ICError;
  68.     begin
  69.         s := HGetState(prefh);
  70.         HLock(prefh);
  71.         err := ICSetPref(inst, key, attr, prefh^, GetHandleSize(prefh));
  72.         HSetState(prefh, s);
  73.         ICSetPrefHandle := err;
  74.     end; (* ICSetPrefHandle *)
  75.  
  76. {$PUSH}
  77. {$R-}
  78.     function ICGetPrefStr (inst: ICInstance; key: Str255; var attr: ICAttr; var str: Str255): ICError;
  79.         var
  80.             err: ICError;
  81.             size: longint;
  82.     begin
  83.         size := 256;
  84.         err := ICGetPref(inst, key, attr, @str, size);
  85.         if err <> noErr then begin
  86.             str := '';
  87.         end; (* if *)
  88.         ICGetPrefStr := err;
  89.     end; (* ICGetPrefStr *)
  90.  
  91.     function ICSetPrefStr (inst: ICInstance; key: Str255; attr: ICAttr; str: Str255): ICError;
  92.     begin
  93.         ICSetPrefStr := ICSetPref(inst, key, attr, @str, length(str) + 1);
  94.     end; (* ICSetPrefStr *)
  95. {$POP}
  96.  
  97. end. (* ICSubs *)